package com.woniuxy.service.impl;
/**
 * 业务层实现类，继承与ServiceImpl类，ServiceImpl类实现IService接口中所有的方法
 * 泛型
 * 1.第一个泛型：表示数据层接口
 * 2.第二个泛型：表示实体类类型
 */

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.woniuxy.dao.EmployeeMapper;
import com.woniuxy.dto.EmployeeDto;
import com.woniuxy.entity.Employee;
import com.woniuxy.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements  EmployeeService {
    @Autowired
    private EmployeeMapper employeeMapper;

   // @Override
//    public PageInfo<EmployeeDto> findByPage(Map<String,Object> condition, int pageNum, int pageSize) {
//        //1.设置页码和每页大小，必须写在查询语句的上一句
//        PageHelper.startPage(pageNum,pageSize);
//        //2.查询所有记录，不用自己编写分页代码
//        List<EmployeeDto> list = employeeMapper.findByPage(condition);
//        //3.封装成PageInfo对象，类似于以前PageBean
//        PageInfo<EmployeeDto> pageInfo = new PageInfo<>(list);
//        return pageInfo;
//    }

    /**
     * 带条件分页查询，Map中封装了以下属性
     * {
     * "pageNum": 1,
     * "pageSize": 10,
     * "name": "张三",
     * "min": 5000,
     * "max": 10000
     * }
     *
     * @param condition
     */
    @Override
    public Page<EmployeeDto> queryByCondition(Map<String, Object> condition) {
        //1.创建Page对象，并且设置第几页，每页大小
        Integer pageNum = (Integer) condition.get("pageNum");
        Integer pageSize = (Integer) condition.get("pageSize");
        Page<EmployeeDto> page = new Page<>(pageNum, pageSize);
        //2.调用数据层查询queryByCondition方法的返回值对象employeeDtoPage与page对象相等，是同一个对象
        Page<EmployeeDto> employeeDtoPage =  employeeMapper.queryByCondition(page,condition);
        //3.返回页面对象
        return employeeDtoPage;
    }
}
